/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._326;

/**
 * 给定一个整数，写一个函数来判断它是否是 3 的幂次方。
 * <p>
 * 示例 1:
 * <p>
 * 输入: 27
 * 输出: true
 * 示例 2:
 * <p>
 * 输入: 0
 * 输出: false
 * 示例 3:
 * <p>
 * 输入: 9
 * 输出: true
 * 示例 4:
 * <p>
 * 输入: 45
 * 输出: false
 * 进阶：
 * 你能不使用循环或者递归来完成本题吗？
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._326
 * @ClassName: PowerOfThree
 * @Author: linyaonan
 * @Date: 2019/12/20 19:04
 */
public class PowerOfThree {

    public boolean isPowerOfThree(int n) {
        return n == 1 || n == 3 || n == 9 || n == 27 || n == 81 || n == 243
                || n == 729 || n == 2187 || n == 6561 || n == 19683 || n == 59049
                || n == 177147 || n == 531441 || n == 1594323 || n == 4782969
                || n == 14348907 || n == 43046721 || n == 129140163 || n == 387420489
                || n == 1162261467;
    }

    public boolean isPowerOfThree2(int n) {
        if (n <= 0) {
            return false;
        } else {
            while(n % 3 ==0) {
                n /= 3;
            }
            return n == 1;
        }
    }
}
